#!/usr/local/bin/perl
use strict;

sub ask_user
{  print "$_[0] [$_[1]]: ";
   my $rc = <>;
   chomp $rc;
   if($rc eq "") { $rc = $_[1]; }
   return $rc;}

use LWP::Simple;
my $utils = "http://www.ncbi.nlm.nih.gov/entrez/eutils";
my $db     = ask_user("Database", "nucleotide");
my $query  = ask_user("Query?Any Accession ID",    "NM_008327");
my $report = ask_user("Report",   "FASTA");

open(MRNA,">$query"."mRNA.seq.out");

my $efetch = "$utils/efetch.fcgi?" .
              "db=$db&id=$query&rettype=fasta&retmode=text";
print "fetching_mRNA from NCBI...................\n";

my $efetch_result = get($efetch . $query);

print MRNA $efetch_result,"\n";
print "mRNA Obtained, Written to file $query","mRNA.seq.out............\n";

close(MRNA);


open(IRNAT,">$query"."siRNATarget.set.out");
open(IRNAC,">$query"."siRNACandidate.set.out");
open(MRNA,"<$query"."mRNA.seq.out");
my $cutmRNA5 = ask_user("5\' No.of Nucleotides that will not be used in generating siRNA(>=2)","2");
my $cutmRNA3 = ask_user("3\' No.of Nucleotides that will not be used in generating siRNA","0");

my $line=<MRNA>;
my $totalmRNA="";
while($line=<MRNA>){
    chomp($line);
    $totalmRNA=$totalmRNA.$line;
}
my $len=length($totalmRNA)-$cutmRNA5-$cutmRNA3;
my $startposition=$cutmRNA5+1;

print "IRNA pool has being generating.................","\n";

my %SIRNAS=();


my $siRNAtargetTemp=""; my $count=0;
my $siRNAcandidateTemp="";
while($len>20){
    $count++;$len=$len-1;
    $siRNAtargetTemp=substr($totalmRNA,$startposition-1,19);
    print IRNAT ">$query","_siRNATarget_position_",$startposition,"_",$startposition+18,"\t",$siRNAtargetTemp,"\n";

    my $endposition=$startposition+18;
    my $keytemp=$query."_".$startposition."_".$endposition;

    $SIRNAS{$keytemp}[0]=$siRNAtargetTemp;

    $siRNAcandidateTemp=substr($totalmRNA,$startposition-1,19);
    $siRNAcandidateTemp=scalar reverse($siRNAcandidateTemp);
    $siRNAcandidateTemp=~tr/[ATGC]/[uacg]/;
    $siRNAcandidateTemp=~tr/[uacg]/[UACG]/;
    print IRNAC ">$query","_siRNACandidate_Target_position_",$startposition,"_",$startposition+18,"\t",$siRNAcandidateTemp,"\n";

    $SIRNAS{$keytemp}[1]=$siRNAcandidateTemp;
    $startposition++;
}
print "IRNA pool has been generated for mRNA of $query",".....\n";

close(MRNA);
close(IRNAT);
close(IRNAC);


